package com.madd.config;

import com.madd.entity.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.persistence.*;

@Component
public class CompanyListener {

   /* @PrePersist 在实体保存到数据库之前执行的操作
    @PostPersist 在实体保存到数据库之后执行的操作
    @PreUpdate 在实体更新到数据库之前执行的操作
    @PostUpdate 在实体更新到数据库之后执行的操作
    @PreRemove 在实体从数据库删除之前执行的操作
    @PostRemove 在实体从数据库删除之后执行的操作*/



    private final String LOG_PREFIX = "CompanyListener 实体持久化监听>>>>>> user实体执行";
    private final String LOG_POSTFIX = "<<<<<<";
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * @param user
     */
    @PrePersist
    public void PrePersist(final User user) {
        this.logger.info("{} [{}] {}", this.LOG_PREFIX, "新增操作之前", LOG_POSTFIX);
    }

    /**
     * @param user
     */
    @PostPersist
    public void PostPersist(final User user) {
        this.logger.info("{} [{}] {}", this.LOG_PREFIX, "新增操作之后", LOG_POSTFIX);
    }

    /**
     * @param user
     */
    @PreUpdate
    public void PreUpdate(final User user) {
        this.logger.info("{} [{}] {}", this.LOG_PREFIX, "更新操作之前", LOG_POSTFIX);
    }

    /**
     * @param user
     */
    @PostUpdate
    public void PostUpdate(final User user) {
        this.logger.info("{} [{}] {}", this.LOG_PREFIX, "更新操作之后", LOG_POSTFIX);
    }

    /**
     * @param user
     */
    @PreRemove
    public void PreRemove(final User user) {
        this.logger.info("{} [{}] {}", this.LOG_PREFIX, "删除操作之前", LOG_POSTFIX);
    }

    /**
     * @param user
     */
    @PostRemove
    public void PostRemove(final User user) {
        this.logger.info("{} [{}] {}", this.LOG_PREFIX, "删除操作之后", LOG_POSTFIX);
    }
}